(function($) {

	$.extend($.fn, {

		treeSelector : function(settings) {
			/**
			 * 属性
			 * @param {open_id} 打开窗口按钮id,无需设置
			 * @param {win_id} 窗口id,无需设置
			 * @param {tree_id} 树id,无需设置
			 * @param {choiceName} 选择的按钮的name,如果单选是radio的name,多选是checkbox的name
			 * @param {url} 树获取数据的地址
			 * @param {hiddenName} 后台接收参数的name,对应隐藏域
			 * @param {btnText} 打开按钮的标题
			 * @param {title} 窗口的标题
			 */
			var option = {
				open_id : '',
				win_id : '',
				tree_id	: '',
				choiceName : '',
				url : '',
				hiddenName : '',
				btnText : '选择',
				title : '选择'
			};
			//获取引用
			var self = this;
			//获取参数
			option = $.extend(option, settings);
			//渲染面板id
			var self_id = $(self).attr('id');
			//设置按钮,窗口,树的id
			option.open_id = self_id + '_open';
			option.win_id = self_id + '_win';
			option.tree_id = self_id + '_tree';
			//初始化
			self.init_(option);
			//绑定
			self.bind_(self,option);
		},
		init_ : function(option) {
			//初始化,按钮,窗口,树
			var html = '';
			html += '<input id="'+option.open_id+'" type="button" class="btn_simple" value="'+option.btnText+'" />';
			html += '<div id="'+option.win_id+'" title="'+option.title+'" style="display:none;">';
			html += '<ul id="'+option.tree_id+'" class="filetree"></ul>';
			html += '</div>';
			$(this).prepend(html);
		},
		bind_ : function(self,option){
			//树获取数据
			$("#"+option.tree_id).treeview( {
				url : option.url
			});
			//打开窗口
			$('#'+option.open_id).click(function(){
				//选中反显
				$('#'+option.win_id+' input[name='+option.choiceName+']').each(function(){
					var checkbox = this;
					$("input[name="+option.hiddenName+"]").each(function() {
						if($(checkbox).val() == $(this).val()){
							$(checkbox).attr('checked','checked');
						}
					});
				});
				//打开窗口
				$('#'+option.win_id).dialog({
					width: 280,
					height: 400,
					position: ["center",20],
					buttons: {
						"OK": function() {
							$("input[name="+option.hiddenName+"]").each(function() {
								$(this).parent().remove();
							});
					
							//选中
							$('#'+option.tree_id+' input[name='+option.choiceName+']:checked').each(function(){
								self.selected_(this,self,option);
								$(this).removeAttr("checked");
							});
							$(this).dialog("close");
						}
					}
				});
				return false;
			});
		},
		selected_ : function(o,self,option){
			var hasContain = false;
			$("input[name="+option.hiddenName+"]").each(function() {
				if($(this).val()==$(o).val()) {
					hasContain = true;
				}
			});
			if(hasContain) {
				return;
			}
			//选中
			var s = "<div style='padding-top:3px;color:blue;'>";
			s += $(o).parent().text();
			s += "<a href='javascript:void(0);' onclick='$(this).parent().remove();' style='color:red;'>X</a>";
			s += "<input type='hidden' name='"+option.hiddenName+"' value='"+$(o).val()+"'/>";
			s += "</div>";
			$(self).append(s);
		}
	});

})(jQuery);